# 编写一个用户注册小程序，要求用户在控制台输入“ID”、“EMAIL地址”、“身份证号”、“姓名”。要求：
# 	ID长度不能超过8位，且只能由数字、字母、下划线组成
# 	EMAIL地址要求符合基本电子邮件格式
# 	身份证号要求符合基本格式
# 	姓名只能中文且不能超过4位
# 	以上操作均不能用正则表达式
# 验证合法后输出用户的所有信息，要求在信息中体现出性别。


def check_id_card(num: str):
    data_num = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
    sum = 0
    for i in range(17):
        sum += int(num[i])*data_num[i]
    result=sum%11
    check_dict={ 0:1,1:0,2:"X",3:9,4:8,5:7,6:6,7:5,8:4,9:3,10:2}
    if result in check_dict.keys():
        if str(check_dict.get(result)) == str(num[-1]):
            # print(num)
            return True
        else:
            return False
    return False

def jo(m):
    if m%2 == 0:
        return "女"
    else:
        return "男"


print("请输入你的“ID”、“EMAIL地址”、“身份证号”、“姓名”，以enter键间隔")
id = input("ID\n")
email = input("EMAIL地址\n")
idCard = input("身份证号\n")
name = input("姓名\n")

print("注册中...")
print("检验中...")

flag1 = True
for i in id:
    if (not (i.isalnum() or i.isalpha() or i=="_")) and len(id) > 8:
        flag1 = False
        print("id错误")
        break

if flag1:
    print("id正确")

flag2 = True
if not ("@" in email and ".com" in email):
    flag2 = False
    print("email错误")

if flag2:
    print("email正确")

flag3 = True
if len(idCard)==18:
    if not check_id_card(idCard):
        flag = False
else:
    flag = False

if flag3:
    print("身份证号码输入正确")
else:
    print("身份证号码输入错误")

flag4 = True

for ch in name:
    if (not('\u4e00' <= ch <= '\u9fff')) or len(name) > 4:
        flag4 = False
        print("name错误")
        break

if flag4:
    print("name正确")

if flag1 and flag2 and flag3 and flag4:
    print("注册成功\n")
    print("信息是：")
    print("id：",id)
    print("姓名：",name)
    print("性别：",jo(int(idCard[-2])))
    print("email地址：",email)
    print("身份证号码：",idCard)
else:
    print("注册失败")
